package com.nwpu.coursesupport.service;

import java.util.List;

import com.nwpu.coursesupport.criteria.BatchDealAnswerSearchCriteria;
import com.nwpu.coursesupport.criteria.TaskSubmitResultSearchCriteria;
import com.nwpu.coursesupport.entity.Resource;
import com.nwpu.coursesupport.entity.bean.Files.FileItem;
import com.nwpu.coursesupport.entity.bean.JSONResult;
import com.nwpu.coursesupport.exception.BatchTaskPersonalException;
import com.nwpu.coursesupport.service.param.IDListParam;
import com.nwpu.coursesupport.service.param.IDParam;
import com.nwpu.coursesupport.service.param.TaskSubmitResultServiceParam;
import com.nwpu.coursesupport.service.param.TaskSubmitResultServiceParam.SubmitParam;

public interface TaskSubmitResultService {

	public JSONResult detail(IDParam p) throws Exception ;
	
	public JSONResult taskMainList(TaskSubmitResultSearchCriteria sc) throws Exception ;
	
	public JSONResult taskPersonalList(TaskSubmitResultSearchCriteria sc) throws Exception ;
	
	public JSONResult update(TaskSubmitResultServiceParam.UpdateParam p) throws Exception ;

	public JSONResult personalTaskCreate(TaskSubmitResultServiceParam.CreatePersonalTaskParam p) throws BatchTaskPersonalException ;
	
	public JSONResult personalTaskBatchCreate(TaskSubmitResultServiceParam.BatchCreatePersonalTaskParam p)
			throws BatchTaskPersonalException;
	
	public JSONResult review(TaskSubmitResultServiceParam.ReviewParam p);
	
	public JSONResult batchReview(TaskSubmitResultServiceParam.BatchReviewParam p) throws Exception;
	
	public JSONResult submit(TaskSubmitResultServiceParam.SubmitParam p) throws Exception;
	
	public JSONResult remove(IDParam p) throws Exception ;
	
	public JSONResult removeAll(IDListParam p) throws Exception ;
	public JSONResult searchUser(TaskSubmitResultServiceParam.SearchUserParam  p) throws Exception;
	
	public JSONResult updateAnswerStatus(TaskSubmitResultServiceParam.DealAnswerVisible p);
	public JSONResult batchUpdateAnswerStatus(BatchDealAnswerSearchCriteria p);
	
	public JSONResult shareSubmit(TaskSubmitResultServiceParam.ShareSubmitParam p);

	public JSONResult changeStatus(IDParam p) throws Exception;

	public JSONResult reUploadFile(TaskSubmitResultServiceParam.SubmitParam p) throws Exception;

	public List<FileItem> getAllFileUrl(IDParam p);

	public String getInfoZip(int assignId);

}
